import RPi.GPIO as GPIO
import time

# 步进电机引脚定义
DIR = 22
STEP = 23
# 步进电机转速（每秒脉冲数）
speed = 10

# GPIO 初始化
GPIO.setmode(GPIO.BCM)
GPIO.setup(DIR, GPIO.OUT)
GPIO.setup(STEP, GPIO.OUT)

# 步进电机方向控制函数
def set_dir(dir):
    if dir == 'cw':
        GPIO.output(DIR, GPIO.LOW)
    elif dir == 'ccw':
        GPIO.output(DIR, GPIO.HIGH)

# 步进电机转动函数
def step(num_steps, dir):
    set_dir(dir)
    for i in range(num_steps):
        GPIO.output(STEP, GPIO.HIGH)
        time.sleep(1.0/(2*speed))
        GPIO.output(STEP, GPIO.LOW)
        time.sleep(1.0/(2*speed))

# 主函数
if __name__ == '__main__':
    try:
        while True:
            print("cw")
            # 步进电机顺时针旋转一圈
            step(200, 'cw')
            print("ccw")
            # 停留 1 秒
            time.sleep(1)
            # 步进电机逆时针旋转一圈
            step(200, 'ccw')
            # 停留 1 秒
            time.sleep(1)
    except KeyboardInterrupt:
        GPIO.cleanup()

        # 清理 GPIO 引脚